﻿#define _CRT_SECURE_NO_WARNINGS 1
//峰值元素是指其值严格⼤于左右相邻值的元素。
//给你⼀个整数数组nums，找到峰值元素并返回其索引。数组可能包含多个峰值，在这种情况下，返回任何⼀个峰值所在位置即可。
//你可以假设nums[-1] = nums[n] =  - ∞。你必须实现时间复杂度为O(logn)的算法来解决此问题
//eg:输⼊：nums = [1, 2, 1, 3, 5, 6, 4] 输出：1或5(下标)
#include <iostream>
using namespace std;

int peakIndexInMountainArray(int* a,int n)
{
	int left = 0, right = n - 1;
	while (left<right)
	{
		int mid = left + (right - left+1) / 2;
		if (a[mid] > a[mid - 1])
			left = mid;
		else
			right = mid - 1;
	}
	return left;
}

int main()
{
	int nums[] = { 1, 2, 1, 3, 5, 6, 4 };
	int n = sizeof(nums) / sizeof(nums[0]);
	for (size_t i = 0; i < n; i++)
	{
		cout << nums[i] << ' ';
	}
	cout << endl;

	int an=peakIndexInMountainArray(nums,n);
	cout << an << endl;

	return 0;
}